#pragma once
#include "COM_h.h"

class CAnimals : public IDog, public ICat, public IPig
{
private:
    unsigned int m_nCnt;

public:
    CAnimals();
    ~CAnimals();

    virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
    virtual ULONG STDMETHODCALLTYPE AddRef();
    virtual ULONG STDMETHODCALLTYPE Release();

    virtual HRESULT STDMETHODCALLTYPE Woof(IN const unsigned char* lpString);
    virtual HRESULT STDMETHODCALLTYPE Meow(IN const unsigned char* lpString);
    virtual HRESULT STDMETHODCALLTYPE Oink(IN const unsigned char* lpString);
};

EXTERN_C const GUID CLSID_ANIMALS;

EXTERN_C HRESULT GetComObject(CLSID clsid, IID iid, void** ppvod);
